cmake_minimum_required(VERSION 3.16)
project(unixprog C)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED True)
# o0 优化：不做任何优化，默认的编译选项
# o2 优化：会尝试更多的寄存器级的优化以及指令级的优化，它会在编译期间占用更多的内存和编译时间
# 参考：https://blog.csdn.net/qq_31108501/article/details/51842166
#
# -Werror：视警告为错误，出现任何警告即放弃编译
# -Wall：会打开一些很有用的警告选项，建议编译时加此选项
# -Wextra：打印一些额外的警告信息
# -w：禁止显示所有警告信息
#
# -fopenmp：并行优化
# 参考：https://www.cnblogs.com/lfri/p/10121712.html
set(CMAKE_C_FLAGS "-o2 -Wall -ggdb -fopenmp")

# 静态库文件
add_subdirectory(lib)

# 第一章 unix基础知识代码
add_subdirectory(ch1_unix_system_overview)
# 第二章 unix标准及实现
add_subdirectory(ch2_unix_standardization_and_implementations)
# 第三章 文件IO
add_subdirectory(ch3_fileio)
# # 第四章 文件和目录
add_subdirectory(ch4_file_and_directory)
# # 第五章 标准I/O库
add_subdirectory(ch5_stdio)
# 第六章 系统数据文件和信息
add_subdirectory(ch6_sysdata)
# 第七章 进程环境
add_subdirectory(ch7_procenv)
# 第八章 进程控制
add_subdirectory(ch8_procctl)
# 第九章 进程关系
add_subdirectory(ch9_procrel)
# 第十章 信号
add_subdirectory(ch10_signal)